
extern "C" __declspec(dllexport) void SceneNode_AddAnimator(ISceneNode *node, ISceneNodeAnimator *animator)
{
	node->addAnimator(animator);
}

extern "C" __declspec(dllexport) void SceneNode_AddChild(ISceneNode *node, ISceneNode *child)
{
	node->addChild(child);
}

extern "C" __declspec(dllexport) ISceneNode* SceneNode_Clone(ISceneNode *node, ISceneNode *newParent, ISceneManager *newManager)
{
	return node->clone(newParent, newManager);
}

extern "C" __declspec(dllexport) void SceneNode_GetAbsolutePosition(ISceneNode *node, float &x, float &y, float &z)
{
	vector3df pos = node->getAbsolutePosition();
	x = pos.X;
	y = pos.Y;
	z = pos.Z;
}

extern "C" __declspec(dllexport) unsigned int SceneNode_GetAutomaticCulling(ISceneNode *node)
{
	return (unsigned int)node->getAutomaticCulling();
}

extern "C" __declspec(dllexport) int SceneNode_GetID(ISceneNode *node)
{
	return node->getID();
}

extern "C" __declspec(dllexport) SMaterial& SceneNode_GetMaterial(ISceneNode *node, unsigned int num)
{
	return node->getMaterial(num);
}

extern "C" __declspec(dllexport) unsigned int SceneNode_GetMaterialCount(ISceneNode *node)
{
	return node->getMaterialCount();
}

extern "C" __declspec(dllexport) const char* SceneNode_GetName(ISceneNode *node)
{
	return node->getName();
}

extern "C" __declspec(dllexport) ISceneNode* SceneNode_GetParent(ISceneNode *node)
{
	return node->getParent();
}

extern "C" __declspec(dllexport) void SceneNode_GetPosition(ISceneNode *node, float &x, float &y, float &z)
{
	vector3df pos = node->getPosition();
	x = pos.X;
	y = pos.Y;
	z = pos.Z;
}

extern "C" __declspec(dllexport) void SceneNode_GetRotation(ISceneNode *node, float &x, float &y, float &z)
{
	vector3df pos = node->getRotation();
	x = pos.X;
	y = pos.Y;
	z = pos.Z;
}

extern "C" __declspec(dllexport) void SceneNode_GetScale(ISceneNode *node, float &x, float &y, float &z)
{
	vector3df pos = node->getScale();
	x = pos.X;
	y = pos.Y;
	z = pos.Z;
}

extern "C" __declspec(dllexport) ISceneManager* SceneNode_GetSceneManager(ISceneNode *node)
{
	return node->getSceneManager();
}

extern "C" __declspec(dllexport) ITriangleSelector* SceneNode_GetTriangleSelector(ISceneNode *node)
{
	return node->getTriangleSelector();
}

extern "C" __declspec(dllexport) unsigned int SceneNode_GetType(ISceneNode *node)
{
	return node->getType();
}

extern "C" __declspec(dllexport) int SceneNode_IsDebugDataVisible(ISceneNode *node)
{
	return node->isDebugDataVisible();
}

extern "C" __declspec(dllexport) bool SceneNode_IsDebugObject(ISceneNode *node)
{
	return node->isDebugObject();
}

extern "C" __declspec(dllexport) bool SceneNode_IsTrulyVisible(ISceneNode *node)
{
	return node->isTrulyVisible();
}

extern "C" __declspec(dllexport) bool SceneNode_IsVisible(ISceneNode *node)
{
	return node->isVisible();
}

extern "C" __declspec(dllexport) void SceneNode_OnAnimate(ISceneNode *node, unsigned int time)
{
	node->OnAnimate(time);
}

extern "C" __declspec(dllexport) void SceneNode_OnRegisterSceneNode(ISceneNode *node)
{
	node->OnRegisterSceneNode();
}

extern "C" __declspec(dllexport) void SceneNode_Remove(ISceneNode *node)
{
	node->remove();
}

extern "C" __declspec(dllexport) void SceneNode_RemoveAll(ISceneNode *node)
{
	node->removeAll();
}

extern "C" __declspec(dllexport) void SceneNode_RemoveAnimator(ISceneNode *node, ISceneNodeAnimator* animator)
{
	node->removeAnimator(animator);
}

extern "C" __declspec(dllexport) void SceneNode_RemoveAnimators(ISceneNode *node)
{
	node->removeAnimators();
}

extern "C" __declspec(dllexport) void SceneNode_RemoveChild(ISceneNode *node, ISceneNode* child)
{
	node->removeChild(child);
}

extern "C" __declspec(dllexport) void SceneNode_Render(ISceneNode *node)
{
	node->render();
}

extern "C" __declspec(dllexport) void SceneNode_SetAutomaticCulling(ISceneNode *node, unsigned int culling)
{
	node->setAutomaticCulling((E_CULLING_TYPE)culling);
}

extern "C" __declspec(dllexport) void SceneNode_SetDebugDataVisible(ISceneNode *node, int state)
{
	node->setDebugDataVisible(state);
}

extern "C" __declspec(dllexport) void SceneNode_SetID(ISceneNode *node, int id)
{
	node->setID(id);
}

extern "C" __declspec(dllexport) void SceneNode_SetIsDebugObject(ISceneNode *node, bool debugObject)
{
	node->setIsDebugObject(debugObject);
}

extern "C" __declspec(dllexport) void SceneNode_SetMaterialFlag(ISceneNode *node, int flag, bool value)
{
	node->setMaterialFlag((video::E_MATERIAL_FLAG)flag, value);
}

extern "C" __declspec(dllexport) void SceneNode_SetMaterialTexture(ISceneNode *node, int textureLayer, ITexture* texture)
{
	node->setMaterialTexture(textureLayer, texture);
}

extern "C" __declspec(dllexport) void SceneNode_SetMaterialType(ISceneNode *node, unsigned int newType)
{
	node->setMaterialType((E_MATERIAL_TYPE)newType);
}

extern "C" __declspec(dllexport) void SceneNode_SetName(ISceneNode *node, const char* name)
{
	node->setName(name);
}

extern "C" __declspec(dllexport) void SceneNode_SetParent(ISceneNode *node, ISceneNode* parent)
{
	node->setParent(parent);
}

extern "C" __declspec(dllexport) void SceneNode_SetPosition(ISceneNode *node, float x, float y, float z)
{
	node->setPosition(vector3df(x, y, z));
}

extern "C" __declspec(dllexport) void SceneNode_SetRotation(ISceneNode *node, float x, float y, float z)
{
	node->setRotation(vector3df(x, y, z));
}

extern "C" __declspec(dllexport) void SceneNode_SetScale(ISceneNode *node, float x, float y, float z)
{
	node->setScale(vector3df(x, y, z));
}

extern "C" __declspec(dllexport) void SceneNode_SetTriangleSelector(ISceneNode *node, ITriangleSelector* selector)
{
	node->setTriangleSelector(selector);
}

extern "C" __declspec(dllexport) void SceneNode_SetVisible(ISceneNode *node, bool visible)
{
	node->setVisible(visible);
}

extern "C" __declspec(dllexport) void SceneNode_UpdateAbsolutePosition(ISceneNode *node)
{
	node->updateAbsolutePosition();
}
